Verifying Concurrent Programs by Memory Unwinding

نویسندگان

  • Ermenegildo Tomasco
  • Omar Inverso
  • Bernd Fischer
  • Salvatore La Torre
  • Gennaro Parlato
چکیده

We describe a new sequentialization-based approach to the symbolic verification of multithreaded programs with shared memory and dynamic thread creation. Its main novelty is the idea of memory unwinding (MU), i.e., a sequence of write operations into the shared memory. For the verification, we nondeterministically guess an MU and then simulate the behavior of the program according to any scheduling that respects it. This approach is complementary to other sequentializations and explores an orthogonal dimension, i.e., the number of write operations. It also simplifies the implementation of several important optimizations, in particular the targeted exposure of individual writes. We implemented this approach as a code-to-code transformation from multithreaded into nondeterministic sequential programs, which allows the reuse of sequential verification tools. Experiments show that our approach is e↵ective: it found all errors in the concurrency category of SV-COMP15.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Partial-order verification in SPIN can be more efficient

Partial-order reduction methods form a collection of state exploration techniques set to relieve the stateexplosion problem in concurrent program verification. One such method is implemented in the verification tool SPIN. Its use often reduces significantly the memory and time needed for verifying local and termination properties of concurrent programs and, moreover, for verifying that concurre...

متن کامل

PhD Qualifying Dissertation Validating and Verifying Memory Safety for Concurrent Operating System Code

The current practice of finding programming errors in operating system development is by testing and debugging. However, testing techniques are expensive because of their requirement of manual labour. Furthermore, they are susceptible to missing severe errors. This problem can be solved by applying automated verification techniques such as software model checking. Most of these techniques suffe...

متن کامل

Verifying Concurrent Programs via Bounded Context-Switching and Induction

This paper presents a new approach to the problem of verifying safety properties of concurrent programs with shared memory and interleaving semantics. Our method builds on and extends contextbounded analysis (CBA), in which thread interleavings are considered only up to K context switches. In a K-induction argument, the base case establishes that the property holds for the first K steps (first ...

متن کامل

Verifying Concurrent Programs by Controlling Alias Interference

Verifying Concurrent Programs by Controlling Alias Interference

متن کامل

Verifying Compiler Transformations for Concurrent Programs

Compilers transform programs, either to optimize performance orto translate language-level constructs into hardware primitives. Forconcurrent programs, ensuring that a transformation preserves thesemantics of the input program can be challenging. In particu-lar, the emitted code must correctly emulate the semantics of thelanguage-level memory model when running on hardware w...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2015